//
// Created by 11067 on 2023/3/7.
//

#ifndef WORD_LIST_CORE_API_H
#define WORD_LIST_CORE_API_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* 计算**最多单词数量**的最长单词链，其中前三个参数已经在上文进行了说明，
* `head`和`tail`分别为单词链**首字母**与**尾字母**约束（如果传入0，表示没有约束），
* 当`enable_loop`为`true`时表示**允许**输入单词文本中隐含“单词环”
* @param words
* @param len
* @param result 由gen_*函数分配内存，使用后需要释放
* @param head
* @param tail
* @param enable_loop 允许有环
* @return 解长度
*/
DLLEXPORT
int gen_chain_word(char *words[], int len, char *result[], char head, char tail, char no_begin, bool enable_loop);
DLLEXPORT
int gen_chains_all(char *words[], int len, char *result[]);
DLLEXPORT
int gen_chain_char(char *words[], int len, char *result[], char head, char tail, char no_begin, bool enable_loop);
/**
 * 分配result的资源，这只分配char*的数组，但不为每个char*分配空间
 * @return 地址
 */
DLLEXPORT
char **alloc_result();
/**
 * 释放result的资源
 * @param result
 * @return
 */
DLLEXPORT
int free_result(char **result, int len);
#ifdef __cplusplus
};
#endif
#endif //WORD_LIST_CORE_API_H
